/***************************************************************************
 *   Copyright (C) 2006 by Grzegorz Latarowski                             *
 *   g.latarowski@gmail.com                                                *
 *                                                                         *
 *   Project: AutoStop (kodowa nazwa do zmiany)                            *
 *                                                                         *
 ***************************************************************************/


#ifndef BASEHEADER_H
#define BASEHEADER_H


#include <QMessageBox>
#include <QtSql>


/* SQLite dataTypes 
*
* - NULL - The value is a NULL value.
* - INTEGER - The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8
*             bytes depending on the magnitude of the value.
* - REAL -  The value is a floating point value, stored as an 8-byte
*           IEEE floating point number.
* - TEXT -  The value is a text string, stored using the database
*           encoding (UTF-8, UTF-16BE or UTF-16-LE).
* - BLOB -  The value is a blob of data, stored exactly as it was input.
* - INTEGER PRIMARY KEY - automatycznie wstawiane pole z id.
*/




/* ------------------- createBase() --------------------------------------- */
static void createBase()
{
    QSqlQuery query;
        
        // utwórz główną tabelę 
    query.exec(
            "CREATE TABLE autostop ("
            "id INTEGER PRIMARY KEY,"   // unikatowy numer ID 
            "date TEXT,"                // data zdarzenia
            "description TEXT)"         // opis zdarzenia 
              );
    query.exec("CREATE TABLE events (id INTEGER, event BLOB)"); // pliki *.mng ze zdarzeniem
        // wstaw tabele z nagłówkami 
    query.exec("CREATE TABLE header(id INTEGER, header TEXT, type TEXT)");
    query.exec("INSERT INTO header VALUES(0, 'ID', 'uint')");
    query.exec("INSERT INTO header VALUES(1, 'Data', 'date')");
    query.exec("INSERT INTO header VALUES(2, 'Opis', 'limitedString')");
}
/* ------------------------------------------------------------------------ */


/* ------------------------------------------------------------------------ */
/*!
* Tworzy połączenie z bazą danych zawartą w pliku \e fileName.
 */
/* ----------------- createConnection() ----------------------------------- */
static bool createConnection(QString fileName)
{    
    bool create = false;
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("autostopEvents");
    
    QFile file(fileName);
    
    if(!file.exists()) {
        create = true; 
    }
            // nawiąż połączenie 
    db.setDatabaseName(fileName);
    if(!db.open()) {
        QMessageBox::critical(0, QString::fromUtf8("Nie można otworzyć bazy danych"),
                              QString::fromUtf8("Nie można nawiązać połączenia z bazą danych.\n\n"
                                      "Wciśnij anuluj aby wyjść."), QMessageBox::Cancel,
                              QMessageBox::NoButton);
        return false;
    }
    if(create) {
        createBase();
    }
    
    return true;
}
/* ------------------------------------------------------------------------ */





#endif // BASEHEADER_H





